#include <a_samp>
#include <izcmd>
#include <streamer>
native IsValidVehicle(vehicleid);
#define function%0(%1) forward%0(%1);public%0(%1)
#define PRESSED(%0) \
	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

#define MAX_PADDYS 100

#define FJPosHireVehicle -123.0217,-32.4668,3.1172
#define FJPosGetPaddySack -102.7191,-35.4960,3.9605
#define FJPosTransport  1350.87219, -1771.08533, 12.48870
#define FJAreaPos       -273.4105,-60.5778,-122.2512,60.6611//minx,miny,maxx,maxy

#define DIALOG_FJHIREVEHICLE 		(2322)
#define DIALOG_FJGETPADDYSACK       (2323)
#define DIALOG_FJUNHIREVEHICLE      (2324)

#define TIME_UPDATEPADDY            (5000)

new FJArea;
enum fj
{
	pPaddyUsed[MAX_PADDYS] = 0,
	pPaddyObject[MAX_PADDYS],
	pPaddyProgress[MAX_PADDYS],
	pPaddyFillWater[MAX_PADDYS],
	Float:pPaddyPosX[MAX_PADDYS],
	Float:pPaddyPosY[MAX_PADDYS],
	Float:pPaddyPosZ[MAX_PADDYS],
	Text3D:pPaddyText[MAX_PADDYS],
	/////////////////////////////
	pPaddyHarvestUsed[MAX_PADDYS],
	pPaddyHarvestObject[MAX_PADDYS],
	Float:pPaddyHarvestPosX[MAX_PADDYS],
	Float:pPaddyHarvestPosY[MAX_PADDYS],
	Float:pPaddyHarvestPosZ[MAX_PADDYS],
	Text3D:pPaddyHarvestText[MAX_PADDYS],
	/////////////////////////////
	pHasHireVehicle,
	pVehicleHire,
	pTrailerVehicleHire,
	pPaddyInTrailer,
	Text3D:pTrailerText,
	////////////////////////////
	pPaddyHarvestInVehicle,
	pPaddyHarvestInVehicleObject[5],
	////////////////////////////
	pUpdateTime,
}
new pInfos[MAX_PLAYERS][fj];
public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print("");
	print("--------------------------------------\n");
	FJArea = CreateDynamicRectangle(FJAreaPos);
	CreateDynamic3DTextLabel("Ridica sacul cu orez si apasa 'H' ca sa-l vinzi",-1,FJPosTransport,5.0);
	CreateDynamic3DTextLabel("Apasa 'Y' pentru a inchiria un vehicul",-1,FJPosHireVehicle,5.0);
	CreateDynamic3DTextLabel("Apasa 'Y' pentru a primi un sac cu orez",-1,FJPosGetPaddySack,5.0);
	CreateDynamicPickup(19606,1,FJPosHireVehicle);
	CreateDynamicPickup(19606,1,FJPosGetPaddySack);
	CreateDynamicPickup(19606,1,FJPosTransport);
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}
public OnPlayerSpawn(playerid)
{
	ApplyAnimation(playerid,"CARRY","null",0,0,0,0,0,0);
	pInfos[playerid][pUpdateTime] = SetTimerEx("UpdatePaddy",TIME_UPDATEPADDY,1,"i",playerid);
	return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
	KillTimer(pInfos[playerid][pUpdateTime]);
	if(IsValidVehicle(pInfos[playerid][pVehicleHire])) DestroyVehicle(pInfos[playerid][pVehicleHire]);
	if(IsValidVehicle(pInfos[playerid][pTrailerVehicleHire])) DestroyVehicle(pInfos[playerid][pTrailerVehicleHire]);
	if(IsValidDynamic3DTextLabel(pInfos[playerid][pTrailerText])) DestroyDynamic3DTextLabel(pInfos[playerid][pTrailerText]);
	for(new i =0;i<MAX_PADDYS;i++)
	{
	    if(pInfos[playerid][pPaddyUsed][i] == 1)
	    {
	    DestroyPaddy(playerid,i);
	    }
        if(pInfos[playerid][pPaddyHarvestUsed][i] == 1)
        {
        DestroyPaddyHarvest(playerid,i);
        }
	}
    for(new i=0;i<5;i++)
    {
    	if(IsValidObject(pInfos[playerid][pPaddyHarvestInVehicleObject][i]))
     	{
     		DestroyObject(pInfos[playerid][pPaddyHarvestInVehicleObject][i]);
      	}
    }
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
	    case DIALOG_FJHIREVEHICLE:
	    {
	        if(response)
	        {
	            if(GetPlayerMoney(playerid) < 100) return SendClientMessage(playerid,-1,"[Farmer]:Ai nevoie de 100$ pentru a inchiria acest vehicul.");
	            GivePlayerMoney(playerid,-100);
	            pInfos[playerid][pHasHireVehicle] = 1;
				if(listitem == 0)
				{
				pInfos[playerid][pVehicleHire]=CreateVehicle(531,FJPosHireVehicle,0.0,-1,-1,20000);
				pInfos[playerid][pTrailerVehicleHire] = CreateVehicle(610,FJPosHireVehicle,0.0,-1,-1,90000);
				new string[128];
				pInfos[playerid][pPaddyInTrailer] = 0;
				format(string,sizeof(string),"Detinator Trailer {4cff00}%s\nOrez :{4cff00}%d",TickName(playerid),pInfos[playerid][pPaddyInTrailer]);
				pInfos[playerid][pTrailerText] = CreateDynamic3DTextLabel(string,-1,FJPosHireVehicle,5.0,INVALID_PLAYER_ID,pInfos[playerid][pTrailerVehicleHire]);
				SetTimerEx("AttachTrailer",1000,0,"ii",pInfos[playerid][pVehicleHire],pInfos[playerid][pTrailerVehicleHire]);
				PutPlayerInVehicle(playerid,pInfos[playerid][pVehicleHire],0);
				}
				else if(listitem == 1)
				{
				pInfos[playerid][pVehicleHire]=CreateVehicle(532,FJPosHireVehicle,0.0,-1,-1,20000);
				PutPlayerInVehicle(playerid,pInfos[playerid][pVehicleHire],0);
				}
				else if(listitem == 2)
				{
			 	pInfos[playerid][pVehicleHire]=CreateVehicle(478,FJPosHireVehicle,0.0,-1,-1,20000);
			 	PutPlayerInVehicle(playerid,pInfos[playerid][pVehicleHire],0);
				}
	        }
	    }
	    case DIALOG_FJUNHIREVEHICLE:
	    {
	        if(response)
	        {
	            if(IsValidVehicle(pInfos[playerid][pVehicleHire]))
	            {
		            GivePlayerMoney(playerid,50);
		            pInfos[playerid][pHasHireVehicle] = 0;
		            DestroyVehicle(pInfos[playerid][pVehicleHire]);
		            if(IsValidVehicle(pInfos[playerid][pTrailerVehicleHire]))
					{
					pInfos[playerid][pPaddyInTrailer] = 0;
					DestroyVehicle(pInfos[playerid][pTrailerVehicleHire]);
					DestroyDynamic3DTextLabel(pInfos[playerid][pTrailerText]);
					}
	            }
	        }
	    }
	}
	return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{

	if(PRESSED(KEY_YES))
	{
	    if(IsPlayerInRangeOfPoint(playerid,2,FJPosHireVehicle))
	    {
	        if(pInfos[playerid][pHasHireVehicle] == 0)
	        {
	    	ShowPlayerDialog(playerid,DIALOG_FJHIREVEHICLE,DIALOG_STYLE_LIST,"Inchiriere vehicule pentru FarmerJob",
	    	"Tractor(Semanat) $100\nCombina(Culegere) $100\nWalton(Transport) $100","Inchiriaza","Inchide");
	    	}
	    	else
	    	{
		    	if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleID(playerid) == pInfos[playerid][pVehicleHire])
				{
					ShowPlayerDialog(playerid,DIALOG_FJUNHIREVEHICLE,0,"Inchiriere vehicule pentru FarmerJob","Nu mai vrei sa inchiriezi niciun vehicul?\n\
					vei primi 50% bani","Da","Nu");
				}
				else
				{
					SendClientMessage(playerid,-1,"[Farmer]:Trebuie sa fii in vehiculul inchiriat");
				}
	    	}
	    }
	    if(IsPlayerInRangeOfPoint(playerid,2,FJPosGetPaddySack))
	    {
	        if(!IsValidVehicle(pInfos[playerid][pVehicleHire]) ||!IsValidVehicle(pInfos[playerid][pTrailerVehicleHire])) return SendClientMessage(playerid,-1,"[FarmerJob]:You need rent vehicle before");
	        if(GetPVarInt(playerid,"HasGetPaddySack") == 1) return SendClientMessage(playerid,-1,"[Farmer]:Deja ai primit un sac cu orez");
	        if(pInfos[playerid][pPaddyInTrailer] != 0) return SendClientMessage(playerid,-1,"[Farmer]:Trebuie sa insamantezi tot orezul in acest trailer pentru a primi un sac cu orez");
        	ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.0, 0, 0, 0, 0,0); // nhatlenkieu1
			SetPVarInt(playerid,"HasGetPaddySack",1);
			SetTimerEx("CarrySack",1000,0,"i",playerid);
			SetPlayerAttachedObject(playerid, 9, 2060, 1, 0.170999, 0.363000, 0.000000, 0.000000, 93.700012, 0.000000, 0.713000, 0.650000, 1.000000, 0, 0);
	    }
	}
	if(PRESSED(KEY_WALK))
	{
		if(IsValidVehicle(pInfos[playerid][pTrailerVehicleHire]) && GetPVarInt(playerid,"HasGetPaddySack") == 1)
		{
			new Float:x,Float:y,Float:z;
			GetVehiclePos(pInfos[playerid][pTrailerVehicleHire],x,y,z);
			if(IsPlayerInRangeOfPoint(playerid,2,x,y,z))
			{
			    if(pInfos[playerid][pPaddyInTrailer] == 0)
			    {
			    ApplyAnimation(playerid, "CARRY", "PUTDWN105", 4.0, 0, 0, 0, 0,0); // datxuongkieu2
			    pInfos[playerid][pPaddyInTrailer] = 10;
			    RemovePlayerAttachedObject(playerid,9);
			    SetPVarInt(playerid,"HasGetPaddySack",0);
			    new string[128];
				format(string,sizeof(string),"Detinator Trailer {4cff00}%s\nOrez :{4cff00}%d",TickName(playerid),pInfos[playerid][pPaddyInTrailer]);
				UpdateDynamic3DTextLabelText(pInfos[playerid][pTrailerText],-1,string);
			    }
			    else
			    {
			    SendClientMessage(playerid,-1,"[Farmer]:Trebuie sa insamantezi tot orezul in acest trailer pentru a primi un sac cu orez");
			    }
			}
			else
			{
			SendClientMessage(playerid,-1,"[Farmer]:Trebuie sa fii langa un trailer");
			}
		}
	}
	if(PRESSED(KEY_FIRE))
	{
	    if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleID(playerid) == pInfos[playerid][pVehicleHire])
	    {
	        if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 531 && IsPlayerInDynamicArea(playerid,FJArea,1))
	        {
	            if(pInfos[playerid][pPaddyInTrailer] > 0 && CheckPaddyFreeSlot(playerid,1)!= -1)
	            {
		        new Float:x,Float:y,Float:z;
		        GetVehiclePos(pInfos[playerid][pTrailerVehicleHire],x,y,z);
		        pInfos[playerid][pPaddyInTrailer] -= 1;
		        new string[128];
				format(string,sizeof(string),"Detinator Trailer {4cff00}%s\nOrez :{4cff00}%d",TickName(playerid),pInfos[playerid][pPaddyInTrailer]);
				UpdateDynamic3DTextLabelText(pInfos[playerid][pTrailerText],-1,string);
		        CreatePaddy(playerid,CheckPaddyFreeSlot(playerid,1),0,x,y,z-2);
		        }
		        else
		        {
		        SendClientMessage(playerid,-1,"[Farmer]:Nu ai orez in trailer sau ai sloturile pline");
		        }
	        }
	        else if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 532 && IsPlayerInDynamicArea(playerid,FJArea,1))
	        {
	            for(new i =0;i<MAX_PADDYS;i++)
	            {
	                if(pInfos[playerid][pPaddyUsed][i] == 1)
	    			{
	    			    new Float:x,Float:y,Float:z;
						GetDynamicObjectPos(pInfos[playerid][pPaddyObject][i],x,y,z);
						if(IsPlayerInRangeOfPoint(playerid,4,x,y,z))
						{
						    if(pInfos[playerid][pPaddyProgress][i] >= 100)
						    {
						    CreatePaddyHarvest(playerid,CheckPaddyFreeSlot(playerid,2),x,y,z+0.9);
						    DestroyPaddy(playerid,i);
						    return 1;
						    }
						    else
						    {
						    SendClientMessage(playerid,-1,"[Farmer]:Acest orez nu poate fii recoltat");
						    }
						}
	    			}
	            }
	        }
	    }
	}
	if(PRESSED(KEY_NO))
	{
	    if(GetPVarInt(playerid,"HasPickupPaddy") == 0)
	    {
			for(new i =0;i<MAX_PADDYS;i++)
	  		{
	    		if(pInfos[playerid][pPaddyHarvestUsed][i] == 1)
	   			{
			    	new Float:x,Float:y,Float:z;
					GetDynamicObjectPos(pInfos[playerid][pPaddyHarvestObject][i],x,y,z);
					if(IsPlayerInRangeOfPoint(playerid,3,x,y,z))
					{
					ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.0, 0, 0, 0, 0,0); // nhatlenkieu1
					SetPVarInt(playerid,"HasPickupPaddy",1);
					SetTimerEx("CarrySack",1000,0,"i",playerid);
					SetPlayerAttachedObject(playerid, 8, 2060, 1, 0.170999, 0.363000, 0.000000, 0.000000, 93.700012, 0.000000, 0.713000, 0.650000, 1.000000, 0, 0);
					DestroyPaddyHarvest(playerid,i);
					return 1;
					}
	 			}
	    	}
    	}
    	else
    	{
    	    new Float:x,Float:y,Float:z;
    	    GetPlayerPos(playerid,x,y,z);
    	    ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.0, 0, 0, 0, 0,0); // datxuongkieu1
    	    RemovePlayerAttachedObject(playerid,8);
    	    CreatePaddyHarvest(playerid,CheckPaddyFreeSlot(playerid,2),x,y,z-0.8);
    	    SetPVarInt(playerid,"HasPickupPaddy",0);
    	    return 1;
    	}
	}
	if(PRESSED(KEY_CTRL_BACK))
	{
		new Float:x,Float:y,Float:z;
		GetVehiclePos(pInfos[playerid][pVehicleHire],x,y,z);
		if(IsPlayerInRangeOfPoint(playerid,2,FJPosTransport))
		{
		    if(GetPVarInt(playerid,"HasPickupPaddy") == 1)
	    	{
	    	    SetPVarInt(playerid,"HasPickupPaddy",0);
	    	    ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.0, 0, 0, 0, 0,0); // datxuongkieu2
	    	    RemovePlayerAttachedObject(playerid,8);
	    	    GivePlayerMoney(playerid,100);
	    	    return 1;
	    	}
		}
		if(GetVehicleModel(pInfos[playerid][pVehicleHire]) == 478 && IsPlayerInRangeOfPoint(playerid,3,x,y,z))
		{
		    if(GetPVarInt(playerid,"HasPickupPaddy") == 1)
	    	{
	    	    if(pInfos[playerid][pPaddyHarvestInVehicle] < 5)
	    	    {
	    	    SetPVarInt(playerid,"HasPickupPaddy",0);
	    	    ApplyAnimation(playerid, "CARRY", "PUTDWN105", 4.0, 0, 0, 0, 0,0); // datxuongkieu2
	    	    RemovePlayerAttachedObject(playerid,8);
	    	    pInfos[playerid][pPaddyHarvestInVehicle] += 1;
	    	    AddPaddyObjectToVehicle(playerid);
	    	    }
	    	    else
	    	    {
	    	    SendClientMessage(playerid,-1,"[Farmer]:Full,poti transporta recolta.");
	    	    }
	    	}
	    	else
	    	{
	    	    if(pInfos[playerid][pPaddyHarvestInVehicle] > 0)
	    	    {
	    	    DestroyObject(pInfos[playerid][pPaddyHarvestInVehicleObject][pInfos[playerid][pPaddyHarvestInVehicle]-1]);
	    	    pInfos[playerid][pPaddyHarvestInVehicle]-=1;
	    	    ApplyAnimation(playerid, "CARRY", "LIFTUP105", 4.0, 0, 0, 0, 0,0); // nhatlenkieu2
	    	    SetPlayerAttachedObject(playerid, 8, 2060, 1, 0.170999, 0.363000, 0.000000, 0.000000, 93.700012, 0.000000, 0.713000, 0.650000, 1.000000, 0, 0);
	    	    SetPVarInt(playerid,"HasPickupPaddy",1);
	    	    SetTimerEx("CarrySack",1000,0,"i",playerid);
	    	    }
	    	    else
	    	    {
	    	    SendClientMessage(playerid,-1,"[Farmer]:Nu ai orez in vehicul.");
	    	    }
	    	}
		}
	}
	return 1;
}
///////////////////////////
CMD:infojob(playerid,params[])
{
	new string[1024];
	strcat(string,"Farmer Job (NOU)\n");
	strcat(string,"Poti Semana | Sa aduni recolta | Si Sa Stropesti Recolta(In Lucru)");
	ShowPlayerDialog(playerid,1323,0,"Informatii job",string,"Close","");
	return 1;
}
CMD:transport(playerid,params[])
{
	if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(pInfos[playerid][pVehicleHire]) == 478 && GetPlayerVehicleID(playerid) == pInfos[playerid][pVehicleHire])
	{
        if(pInfos[playerid][pPaddyHarvestInVehicle] > 0)
   	    {
   	        SetPlayerCheckpoint(playerid,FJPosTransport,5.0);
   	        /*GivePlayerMoney(playerid,pInfos[playerid][pPaddyHarvestInVehicle]*100);
   	        pInfos[playerid][pPaddyHarvestInVehicle] = 0;
   	        for(new i=0;i<5;i++)
   	        {
   	            if(IsValidObject(pInfos[playerid][pPaddyHarvestInVehicleObject][i]))
   	            {
   	        	DestroyObject(pInfos[playerid][pPaddyHarvestInVehicleObject][i]);
   	        	}
   	        }*/
   	    }
   	    else
   	    {
   	    	SendClientMessage(playerid,-1,"[Farmer]:Nu ai orez in vehicul");
   	    }
	}
	return 1;
}
///////////////////////function

function AddPaddyObjectToVehicle(playerid)
{
	switch(pInfos[playerid][pPaddyHarvestInVehicle])
	{
	    case 1:
	    {
	    pInfos[playerid][pPaddyHarvestInVehicleObject][0] = CreateObject(2060,0,0,-1000,0,0,0,100);
		AttachObjectToVehicle(pInfos[playerid][pPaddyHarvestInVehicleObject][0],pInfos[playerid][pVehicleHire], -0.375000,-1.275000,0.150000,0.000000,0.000000,0.000000);
		}
		case 2:
		{
		pInfos[playerid][pPaddyHarvestInVehicleObject][1] = CreateObject(2060,0,0,-1000,0,0,0,100);
		AttachObjectToVehicle(pInfos[playerid][pPaddyHarvestInVehicleObject][1],pInfos[playerid][pVehicleHire], -0.375000,-1.725000,0.150000,0.000000,0.000000,0.000000);
		}
		case 3:
		{
		pInfos[playerid][pPaddyHarvestInVehicleObject][2] = CreateObject(2060,0,0,-1000,0,0,0,100);
		AttachObjectToVehicle(pInfos[playerid][pPaddyHarvestInVehicleObject][2],pInfos[playerid][pVehicleHire], -0.375000,-2.250000,0.150000,0.000000,0.000000,0.000000);
		}
		case 4:
		{
		pInfos[playerid][pPaddyHarvestInVehicleObject][3] = CreateObject(2060,0,0,-1000,0,0,0,100);
		AttachObjectToVehicle(pInfos[playerid][pPaddyHarvestInVehicleObject][3],pInfos[playerid][pVehicleHire], 0.524999,-1.875000,0.150000,0.000000,0.000000,89.099983);
		}
		case 5:
		{
		pInfos[playerid][pPaddyHarvestInVehicleObject][4] = CreateObject(2060,0,0,-1000,0,0,0,100);
		AttachObjectToVehicle(pInfos[playerid][pPaddyHarvestInVehicleObject][4],pInfos[playerid][pVehicleHire], 0.149999,-1.875000,0.375000,0.000000,0.000000,89.099990);
		}
	}
	return 1;
}
function UpdatePaddy(playerid)
{
	for(new i =0;i<MAX_PADDYS;i++)
	{
	    if(pInfos[playerid][pPaddyUsed][i] == 1)
	    {
	        if(pInfos[playerid][pPaddyProgress][i] < 100)
			{
			    /*if(pInfos[playerid][pPaddyProgress][i] > 50)
				{
				    if(pInfos[playerid][pPaddyFillWater][i] == 0)
				    {
				    new string[128];
				    format(string,sizeof(string),"Paddy Owner %s\nSlot %d\nProgress :%d\nNEED WATER",TickName(playerid),i,pInfos[playerid][pPaddyProgress][i]);
				    UpdateDynamic3DTextLabelText(pInfos[playerid][pPaddyText][i],-1,string);
				    return 1;
				    }
				}*/
			    pInfos[playerid][pPaddyProgress][i] += 1;
				if(pInfos[playerid][pPaddyProgress][i] == 50)
				{
				new Float:x,Float:y,Float:z;
				GetDynamicObjectPos(pInfos[playerid][pPaddyObject][i],x,y,z);
				MoveDynamicObject(pInfos[playerid][pPaddyObject][i],x,y,z+1,2);
				DestroyDynamic3DTextLabel(pInfos[playerid][pPaddyText][i]);
				pInfos[playerid][pPaddyText][i]=CreateDynamic3DTextLabel("",-1,x,y,z+2,5.0);
				}
				new string[128];
			    format(string,sizeof(string),"{fff600}Detinator Orez %s\nSlot {ff0000}%d\nProgres :{00f6ff}%d",TickName(playerid),i,pInfos[playerid][pPaddyProgress][i]);
			    UpdateDynamic3DTextLabelText(pInfos[playerid][pPaddyText][i],-1,string);
			    if(pInfos[playerid][pPaddyProgress][i] == 100)
				{
				format(string,sizeof(string),"{7b1487}POTI RECOLTA{fff600}Orez %s\nSlot {ff0000}%d\nProgres :{00f6ff}%d",TickName(playerid),i,pInfos[playerid][pPaddyProgress][i]);
			    UpdateDynamic3DTextLabelText(pInfos[playerid][pPaddyText][i],-1,string);
				}
			}
	    }
	}
	return 1;
}
function CarrySack(playerid)
{
	ApplyAnimation(playerid, "CARRY", "CRRY_PRTIAL", 4.0, 0, 0, 0, 1, 100); // dangrinh
    return 1;
}
function AttachTrailer(vehicleid,trailerid)
{
    AttachTrailerToVehicle(trailerid,vehicleid);
    return 1;
}
function CheckPaddyFreeSlot(playerid,type)
{
	for(new i =0;i<MAX_PADDYS;i++)
	{
		switch(type)
		{
			case 1:
			{
			    if(pInfos[playerid][pPaddyUsed][i] == 0)
			    {
			        return i;
			    }
	        }
	        case 2:
	        {
	            if(pInfos[playerid][pPaddyHarvestUsed][i] == 0)
			    {
			        return i;
			    }
	        }
	    }
	}
	return -1;
}
function CreatePaddyHarvest(playerid,id,Float:x,Float:y,Float:z)
{
	if(pInfos[playerid][pPaddyHarvestUsed][id] == 1) return 1;
	pInfos[playerid][pPaddyHarvestUsed][id] = 1;
    pInfos[playerid][pPaddyHarvestPosX][id] = x;
    pInfos[playerid][pPaddyHarvestPosY][id] = y;
    pInfos[playerid][pPaddyHarvestPosZ][id] = z;
    pInfos[playerid][pPaddyHarvestObject][id] = CreateDynamicObject(2060,x,y,z,0.0,0.0,0.0);
    new string[128];
    format(string,sizeof(string),"{fff600}Orez Detinator(Culegator) %s\nSlot {ff0000}%d\n{ffffff}Apasa 'N' pentru a culege.",TickName(playerid),id);
    pInfos[playerid][pPaddyHarvestText][id] = CreateDynamic3DTextLabel(string,-1,x,y,z,5.0);
	return 1;
}
function DestroyPaddyHarvest(playerid,id)
{
    if(pInfos[playerid][pPaddyHarvestUsed][id] == 0) return 1;
    pInfos[playerid][pPaddyHarvestUsed][id] = 0;
    pInfos[playerid][pPaddyHarvestPosX][id] = 0.0;
    pInfos[playerid][pPaddyHarvestPosY][id] = 0.0;
    pInfos[playerid][pPaddyHarvestPosZ][id] = 0.0;
    if(IsValidDynamic3DTextLabel(pInfos[playerid][pPaddyHarvestText][id])) DestroyDynamic3DTextLabel(pInfos[playerid][pPaddyHarvestText][id]);
    if(IsValidDynamicObject(pInfos[playerid][pPaddyHarvestObject][id])) DestroyDynamicObject(pInfos[playerid][pPaddyHarvestObject][id]);
	return 1;
}
function CreatePaddy(playerid,id,progress,Float:x,Float:y,Float:z)
{
	if(pInfos[playerid][pPaddyUsed][id] == 1) return 1;
	pInfos[playerid][pPaddyUsed][id] = 1;
    pInfos[playerid][pPaddyPosX][id] = x;
    pInfos[playerid][pPaddyPosY][id] = y;
    pInfos[playerid][pPaddyPosZ][id] = z;
    pInfos[playerid][pPaddyProgress][id] = progress;
    pInfos[playerid][pPaddyObject][id] = CreateDynamicObject(19473,x,y,z,0.0,0.0,0.0);
    new string[128];
    format(string,sizeof(string),"{fff600}Farmer Orez %s\nSlot {ff0000}%d\nProgres :{00f6ff}%d",TickName(playerid),id,pInfos[playerid][pPaddyProgress][id]);
    pInfos[playerid][pPaddyText][id] = CreateDynamic3DTextLabel(string,-1,x,y,z,5.0);
	return 1;
}
function DestroyPaddy(playerid,id)
{
    if(pInfos[playerid][pPaddyUsed][id] == 0) return 1;
    pInfos[playerid][pPaddyUsed][id] = 0;
    pInfos[playerid][pPaddyPosX][id] = 0.0;
    pInfos[playerid][pPaddyPosY][id] = 0.0;
    pInfos[playerid][pPaddyPosZ][id] = 0.0;
    pInfos[playerid][pPaddyProgress][id] = 0;
    if(IsValidDynamic3DTextLabel(pInfos[playerid][pPaddyText][id])) DestroyDynamic3DTextLabel(pInfos[playerid][pPaddyText][id]);
    if(IsValidDynamicObject(pInfos[playerid][pPaddyObject][id])) DestroyDynamicObject(pInfos[playerid][pPaddyObject][id]);
    return 1;
}
stock TickName(playerid)
{
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    return pName;
}